package com.vehiclemanagement.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vehiclemanagement.entity.ETCCardRecharge;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * ETC卡充值记录服务接口
 */
public interface ETCCardRechargeService extends IService<ETCCardRecharge> {
    
    /**
     * 分页查询ETC卡充值记录
     * 
     * @param current 当前页
     * @param size 每页记录数
     * @param searchTerm 搜索关键词
     * @param etcCardId ETC卡ID（可选）
     * @param status 状态（可选）
     * @param startTime 开始时间（可选）
     * @param endTime 结束时间（可选）
     * @return 分页结果
     */
    IPage<ETCCardRecharge> pageRecharges(Integer current, Integer size, String searchTerm, 
                                        Long etcCardId, Integer status, 
                                        LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 根据ID获取充值记录
     * 
     * @param id 充值记录ID
     * @return 充值记录
     */
    ETCCardRecharge getRechargeById(Long id);
    
    /**
     * 添加充值记录，同时更新ETC卡余额
     * 
     * @param recharge 充值记录
     * @return 是否成功
     */
    boolean addRecharge(ETCCardRecharge recharge);
    
    /**
     * 更新充值记录
     * 
     * @param recharge 充值记录
     * @return 是否成功
     */
    boolean updateRecharge(ETCCardRecharge recharge);
    
    /**
     * 删除充值记录
     * 
     * @param id 充值记录ID
     * @return 是否成功
     */
    boolean deleteRecharge(Long id);
    
    /**
     * 获取ETC卡总充值金额
     * 
     * @param etcCardId ETC卡ID
     * @return 总充值金额
     */
    BigDecimal getTotalRechargeAmount(Long etcCardId);
    
    /**
     * 获取某张ETC卡的充值记录
     * 
     * @param etcCardId ETC卡ID
     * @return 充值记录列表
     */
    List<ETCCardRecharge> getRechargesByETCCardId(Long etcCardId);
} 